class ProductsController < ApplicationController
  # GET /products
  # GET /products.json
  def index
    @products = Product.all
    
    @products.each do |product|
      product.quantity = total_quantity(product)
    end 
    
    @product = Product.new
    @categories = Category.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @products }
    end
  end

  # GET /products/1
  # GET /products/1.json
  def show
    @product = Product.find(params[:id])
    @quantity = get_total_quantity

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @product }
    end
  end

  # GET /products/new
  # GET /products/new.json
  def new
    @product = Product.new
    @categories = Category.all
    
    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @product }
    end
  end

  # GET /products/1/edit
  def edit
    @product = Product.find(params[:id])
  end

  # POST /products
  # POST /products.json
  def create
    @product = Product.new(params[:product])
    @categories = Category.all
    
    respond_to do |format|
      if @product.save
        format.html { redirect_to @product, notice: 'Product was successfully created.' }
        format.json { render json: @product, status: :created, location: @product }
      else
        format.html { render action: "new" }
        format.json { render json: @product.errors, status: :unprocessable_entity }
      end
    end
  end

  # PUT /products/1
  # PUT /products/1.json
  def update
    @product = Product.find(params[:id])

    respond_to do |format|
      if @product.update_attributes(params[:product])
        format.html { redirect_to @product, notice: 'Product was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @product.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /products/1
  # DELETE /products/1.json
  def destroy
    @product = Product.find(params[:id])
    @product.destroy

    respond_to do |format|
      format.html { redirect_to products_url }
      format.json { head :no_content }
    end
  end
  
 # GET /products
  # GET /products.json
  def products_by_category
    @products = Product.where(["category_id = ?", params[:id]]).all

    @products.each do |product|
      product.quantity = total_quantity(product)
    end

    @product = Product.new
    @categories = Category.all

    respond_to do |format|
      format.js  { render :layout => false }
      format.json { render json: @products }
    end
  end

  # Get the total quantity of all inventory
  def get_total_quantity
    @product = Product.find(params[:id])
    quantity = 0

    logger.debug @product
     
    @product.inventories.each do |item|
      if item.quantity.is_a?(Integer) 
        quantity = quantity + item.quantity
      end  
    end  
    
    return quantity
  end
  
  def total_quantity( product )
    quantity = 0
    
    product.inventories.each do |item|
      if item.quantity.is_a?(Integer) 
        quantity = quantity + item.quantity
      end  
    end  
    
    return quantity    
  end   
end
